/*
 * The contents of this file are subject to the Mozilla Public License
 * Version 1.1 (the "License");  you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 * http//www.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
 * the specific language governing rights and limitations under the License.
 *
 * The Original Code is ART Ontology API (Sesame2 Implementation).
 *
 * The Initial Developer of the Original Code is University of Roma Tor Vergata.
 * Portions created by University of Roma Tor Vergata are Copyright (C) 2007.
 * All Rights Reserved.
 *
 * ART Ontology API (Sesame2 Implementation) was developed by the Artificial Intelligence Research Group
 * (art.uniroma2.it) at the University of Roma Tor Vergata
 * Current information about the ART Ontology API (Sesame2 Implementation) can be obtained at 
 * http//art.uniroma2.it/owlart
 *
 */
package it.uniroma2.art.owlart.sesame2impl.model;

import org.openrdf.model.BNode;
import org.openrdf.model.Statement;
import org.openrdf.model.URI;

import it.uniroma2.art.owlart.model.ARTNode;
import it.uniroma2.art.owlart.model.ARTResource;
import it.uniroma2.art.owlart.model.ARTStatement;
import it.uniroma2.art.owlart.model.ARTURIResource;
import it.uniroma2.art.owlart.model.NodeFilters;

/**
 * @author Armando Stellato <stellato@info.uniroma2.it>
 *
 */
public class ARTStatementSesame2Impl implements ARTStatement {

	Statement statement;
	
	public ARTStatementSesame2Impl(Statement stm) {
		this.statement = stm;
	}
	
	public ARTNode getObject() {
		return new ARTNodeSesame2Impl(statement.getObject());
	}

	public ARTURIResource getPredicate() {
		return new ARTURIResourceSesame2Impl(statement.getPredicate());
	}

	public ARTResource getSubject() {
		return new ARTResourceSesame2Impl(statement.getSubject());
	}

	/**
	 * convenience method for extracting encapsulated Sesame2 {@link BNode}
	 * 
	 * @return
	 */
	public Statement getSesameStatement() {
		return statement;
	}
	
	public String toString() {
		return statement.toString();
	}

	public ARTResource getNamedGraph() {
		URI context = (URI)statement.getContext();
		if (context==null)
			return NodeFilters.MAINGRAPH;
		else
			return new ARTURIResourceSesame2Impl(context);
	}
	
}
